--[[
描述 ： MLListCellButtonView控件
作者 ： 金伟光
时间 ： 15/03/13
]]
MLListCellButtonView = Class(MLView,'MLListCellButtonView');
MLListCellButtonView.text   				= nil;     	-- 显示文本
MLListCellButtonView.fontType				= nil;
MLListCellButtonView.fontHeight    			= nil;   	-- 字体高度
MLListCellButtonView.fontColor    			= nil;    	-- 字体背景颜色
MLListCellButtonView.fontFocusColor 		= nil;  	-- 字体聚集颜色
MLListCellButtonView.bgImage    			= nil;  	-- 背景图片
MLListCellButtonView.focusImage 			= nil;  	-- 聚集图片
MLListCellButtonView.LOSE_FOCUS_INTERVAL	= nil;-- 失去焦点间隔 闸值
MLListCellButtonView.mWidth 				= nil;     	-- 宽度
MLListCellButtonView.mHeight 				= nil;     	-- 高度
MLListCellButtonView.mIsFocus  				= nil;   	-- 是否聚焦
MLListCellButtonView.mDownX    				= nil;   	-- 触摸屏x坐标
MLListCellButtonView.mDownY    				= nil;   	-- 触摸屏Y坐标
MLListCellButtonView.bgColor                = nil;		--背景颜色
MLListCellButtonView.focusColor             = nil;	    --聚焦颜色
MLListCellButtonView.xInParent              = nil;		--在父控件中的x坐标
MLListCellButtonView.yInParent              = nil;		--在父控件中y坐标
--[[
功能   ： 初始化 MLListCellButtonView 控件
参数   ： w     		宽度
	     h     		高度
	     viewCtrl	所在Ctrl
	     id			控件id
返回   ： button 实例
]]
--把这个item的button模板传递过来，然后返回相应的cellbutton
function MLListCellButtonView:init(viewCtrl,buttonTemplate,buttonText,id)
	width  = buttonTemplate.width or UITheme.BUTTON_WIDTH;
	height = buttonTemplate.height or UITheme.BUTTON_HEIGHT;

	-- 初始化
	self:initView(width, height, viewCtrl, id);
	qtEvent[self.mHashcode] = self;
	self.text = buttonText;
	self.mWidth = width;
	self.mHeight = height;
	self.bgImage = UIImage.imageName(buttonTemplate.bgImage or UITheme.BUTTON_BG_IMAGE);
	self.focusImage = UIImage.imageName(buttonTemplate.focusImage or UITheme.BUTTON_FOCUS_IMAGE);
	self.bgColor = buttonTemplate.bgColor;
	self.focusColor = buttonTemplate.selColor or UITheme.BUTTON_FONT_FOCUS_COLOR;
	self.xInParent = buttonTemplate.x;
	self.yInParent = buttonTemplate.y;

	self.fontHeight = buttonTemplate.fontHeight or UITheme.BUTTON_FONT_HEIGHT;
	self.fontColor = buttonTemplate.fontColor or UITheme.BUTTON_FONT_COLOR;
	self.fontType = buttonTemplate.fontType;
	self.onPoint = function (evt, x, y)
		local interval =  self.LOSE_FOCUS_INTERVAL;
		if evt == MLView.PointDown then
			self.mDownX = x;
			self.mDownY = y;
			self.mIsFocus= true;
		elseif evt == MLView.PointUp then
			self.mDownX = x;
			self.mDownY = y;
			self.mIsFocus = false;
		elseif evt == MLView.PointMove then
			if math.abs(x-self.mDownX) > interval or math.abs(y-self.mDownY) > interval then
				self.mIsFocus = false;
			end
		end
		self:draw();
		return 1;  -- 事件不拦截
	end

	self.onClick = function ()
		self.mIsFocus = false;
		self:draw();
		return 1;
	end


	self:draw();
	return self;
end


--[[
功能   ： 设置文本,在这里一般就不用了，直接在初始化中就完成了
参数   ： text    文本
返回   ： 无
]]
function MLListCellButtonView:setText(text)
	self.text = text;
end

--[[
功能   ： 处理触摸笔事件
参数   ： evt   事件种类
         x     坐标
         y     坐标
返回   ： 无
]]
-- --[[
-- PointDown 	触摸笔按下	0
-- PointUp 	触摸笔抬起	1
-- PointMove 	触摸笔移动	2
-- PointCanCel 触摸笔取消	3
-- ]]
function MLListCellButtonView:onPoint(evt, x, y)
	
end

--[[
功能   ： 画控件
参数   ： 无
返回   ： 无
]]
function MLListCellButtonView:draw()
	local g = self:getGraphic();
    g:clear();
	local color, image = self.fontColor, self.bgImage;
	if self.mIsFocus then
		color = self.fontFocusColor;
		image = self.focusImage or self.bgImage;
	end
	local strw = MLNative.measStringWidth(self.text, self.fontHeight, self.fs);
	local x, y = (self.mWidth-strw)/2, (self.mHeight-self.fontHeight)/2;
	if image then
		g:drawImage(image, 0, 0, self.mWidth, self.mHeight);
	end
	if self.text then
		g:drawString(self.text, x, y, color, self.fontHeight, self.fs);
	end
end

--[[
功能   ： 显示控件
参数   ： 无
返回   ： 无
]]
function MLListCellButtonView:show()
	self:draw();
end

--[[
功能   ： 更新控件
参数   ： 无
返回   ： 无
]]
function MLListCellButtonView:update()
	self:draw();
end

--[[
功能：  触摸笔事件监听函数
参数：  eventType	事件类型
参数：  x	 x 坐标
参数：  y	y 坐标
返回：  是否拦截此事件 true：拦截 false：不拦截
注解：  上层可重写此方法，来监听此事件
用法：   if eventType == View.PointDown then .... end
]]
function qt_event_point(hashcode, evt, x,y)
	if qtEvent[hashcode]~=nil then
		if qtEvent[hashcode].onPoint ~=nil then
			return qtEvent[hashcode].onPoint(evt,x,y);
			else
				if qtEvent[hashcode].onClick ~=nil then
			 	return true;
			 else
				return false;
			 end
		end
	end
end

--[[
功能：  触摸笔点击事件监听函数
参数：	无	
返回：  无
注解：	层可重写此函数，来监听此事件
]] 
function qt_event_click(hashcode)
	if qtEvent[hashcode]~=nil then
		if qtEvent[hashcode].onClick ~=nil then
		   qtEvent[hashcode].onClick();
		end
	end
end
